home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 June
/
EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso
/
earcd
/
utilsys
/
rss14gmd.lha
/
RSys_1.4gmd
/
C
/
SpecialList.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-05-04
|
6KB
|
268 lines
/*
***************************************************************************
*
* Datei:
* RSysSpecialList.c
*
* Inhalt:
*
* --- Globale Routinen ---
*
* void RSysAmigaGuideRefList ( void );
* void SysAvailFontsList ( void );
* void SysBrokerList ( void );
*
* --- Lokale Routinen ---
*
*
* Bemerkungen:
* Spezielle Listen, die unter keine der anderen Kategorien fallen.
*
* Erstellungsdatum:
* 07-Jul-93 Rolf Böhme
*
* Änderungen:
* 07-Jul-93 Rolf Böhme Erstellung
*
***************************************************************************
*/
#include "RSys.h"
#include "protos.h"
void
RSysAmigaGuideRefList (void)
{
LIST listbuff, *list = &listbuff;
NODE *node;
XREF *xrefnode;
LONG key;
int i;
UBYTE *fpart, filename[16];
char *XRefTypes[] =
{
"LINK", "FUNC", "COMM", "INCL", "MACR",
"STRU", "FIEL", "TYPD", "DEFI"
};
DPOS;
HandleHelp (MN_RSysAmigaGuideRefList);
PrintHeader (AGUIDEXREF, NULL);
EmptyListView ();
countentries = 0;
if (AmigaGuideBase = (AMIGAGUIDEBASE *) OpenLibrary ((STRPTR) "amigaguide.library", 33))
{
key = LockAmigaGuideBase (NULL);
if (GetAmigaGuideAttr (AGA_XRefList, NULL, (ULONG *) & list))
{
countentries = CountNodes (list);
if (!NoEntries ())
{
Entries = AllocScrollEntries (countentries);
for (node = list->lh_Head, i = 0; node->ln_Succ && (i < countentries); node = node->ln_Succ, i++)
{
xrefnode = (XREF *) node;
fpart = FilePart (xrefnode->xr_File);
if (fpart != xrefnode->xr_File)
sprintf ((char *) filename, "+%-14s.14s", fpart);
else
strncpy ((char *) filename, (char *) xrefnode->xr_File, 15);
Entries[i].se_obj_id.address = xrefnode;
sprintf (Entries[i].se_Entry, EntryAttr[AGUIDEXREF].ea_dataformat,
xrefnode,
xrefnode->xr_Name, XRefTypes[node->ln_Type],
filename, xrefnode->xr_Line);
}
CreateEntryList (SORT, 9);
}
}
UnlockAmigaGuideBase (key);
CloseLibrary ((LIBRARY *) AmigaGuideBase);
}
else
ErrorHandle ("amigaguide.library", LIBRARY_ERR, OPEN_FAIL, KILL);
PrintStatistics ();
return;
}
void
SysBrokerList (void)
{
NODE *node, *nodes[MAX_BROKER_ENTRIES], *StartNode, *foundBroker = NULL;
APTR adr[MAX_BROKER_ENTRIES];
char name[MAX_BROKER_ENTRIES][22];
int pri[MAX_BROKER_ENTRIES], i, cnt;
DPOS;
HandleHelp (MN_SysBrokerList);
PrintHeader (COMMODITIES, NULL);
EmptyListView ();
/*
* Analog zu FindName() oder FindPort() kann auch hier ein
* Schutzprotokoll nötig sein. Da Commodities auch mit Interrupts
* arbeiten müssen (InputHandler!), sollte gleich mit
* Disable()/Enable() hingelangt werden!
*/
Disable ();
foundBroker = (NODE *) broker;
for (node = foundBroker; node->ln_Pred; node = node->ln_Pred)
StartNode = node;
for (node = StartNode, cnt = 0;
node->ln_Succ && (cnt < MAX_BROKER_ENTRIES);
node = node->ln_Succ)
{
/*
* Vitale Daten kopieren; der Type ist unbekannt! Damit
* dennoch die Namen ausgegeben werden können, übergebe ich
* einfach den Node-Typen.
*/
savestrcpy (name[cnt], node, 22, (int) node->ln_Type);
adr[cnt] = node;
pri[cnt] = node->ln_Pri;
nodes[cnt++] = node;
}
Enable ();
countentries = cnt;
if (NoEntries ())
return;
Entries = AllocScrollEntries (countentries);
for (i = 0; i < cnt; i++)
{
Entries[i].se_obj_id.address = adr[i];
sprintf (Entries[i].se_Entry,
EntryAttr[COMMODITIES].ea_dataformat,
adr[i], name[i], pri[i]);
AddNodeToList (i, SORT, 9);
}
PrintStatistics ();
return;
}
/*
* SysAvailFontsList() listet alle Fonts im Verzeichnis
* FONTS: auf
*/
void
SysAvailFontsList (void)
{
char Style[MAXSHOW];
char *Type[5] =
{
"-", "ROM", "DISK", "-", "SCAL"
};
AVAILFONTSHEADER *afh;
AVAILFONTS *AF;
int extrabytes, initialsize = sizeof (AVAILFONTSHEADER), i;
DPOS;
HandleHelp (MN_SysAvailFontsList);
PrintHeader (ALLFONTS, NULL);
EmptyListView ();
PrintInfo ("Read all Fonts", NO_SPEAK, 0);
do
{
afh = (AVAILFONTSHEADER *) MyAllocVec (initialsize, MEMF_CLEAR | MEMF_ANY, KILL);
if (afh)
{
extrabytes = AvailFonts ((STRPTR) afh, initialsize, AFF_DISK);
if (extrabytes)
{
MyFreeVec (afh);
initialsize += extrabytes;
}
}
}
while (extrabytes);
countentries = afh->afh_NumEntries;
if (NoEntries ())
return;
Entries = AllocScrollEntries (countentries);
AF = (AVAILFONTS *) & (afh[1]);
for (i = 0; i < countentries; i++)
{
strcpy (Style, " ");
if (!(AF[i].af_Attr.ta_Style & FS_NORMAL))
Style[0] = 'N';
if (AF[i].af_Attr.ta_Style & FSF_UNDERLINED)
Style[1] = 'U';
if (AF[i].af_Attr.ta_Style & FSF_BOLD)
Style[2] = 'B';
if (AF[i].af_Attr.ta_Style & FSF_ITALIC)
Style[3] = 'I';
if (AF[i].af_Attr.ta_Style & FSF_EXTENDED)
Style[4] = 'E';
if (AF[i].af_Attr.ta_Style & FSF_COLORFONT)
Style[5] = 'C';
if (AF[i].af_Attr.ta_Style & FSF_TAGGED)
Style[6] = 'T';
Style[7] = STRINGEND;
Entries[i].se_obj_id.address = &AF[i];
sprintf (Entries[i].se_Entry, EntryAttr[ALLFONTS].ea_dataformat,
AF[i].af_Attr.ta_Name,
Type[AF[i].af_Type],
AF[i].af_Attr.ta_YSize,
Style);
AddNodeToList (i, SORT, 0);
}
MyFreeVec (afh);
PrintStatistics ();
return;
}